package com.yuzhi.master.drainEvents.service;

import com.yuzhi.common.core.page.PageDataInfo;
import com.yuzhi.master.drainEvents.domain.bo.DrainEventsBo;
import com.yuzhi.master.drainEvents.domain.request.DrainEventDispatchReq;
import com.yuzhi.master.drainEvents.domain.request.DrainEventsReq;
import com.yuzhi.master.drainEvents.domain.request.DrainMaintOrdersReq;
import com.yuzhi.master.drainEvents.domain.vo.*;

import java.util.List;

/**
 * 事件表
 *
 * @Author mr.lcc
 * @Data 2025/7/24 12:39
 */
public interface IDrainEventsService {


    /**
     * 新增
     *
     * @param dto
     * @return
     */
    Boolean add(DrainEventsBo dto);

    /**
     * 获取数据字典
     *
     * @return
     */
    List<DataDictionary> getDataDictionary(Integer type);

    /**
     * 事件上报-派发
     *
     * @param dto
     * @return
     */
    boolean handOut(DrainEventDispatchReq dto);

    /**
     * 事件上报-派发
     *
     * @param dto
     * @return
     */
    boolean handOut2(DrainEventDispatchReq dto);

    /**
     * 转维修单
     *
     * @param dto
     * @return
     */
    boolean maintain(DrainMaintOrdersReq dto);

    /**
     * 结案
     *
     * @param list
     * @return
     */
    Boolean finish(List<String> list);

    /**
     * 完成
     *
     * @param dto
     * @return
     */
    Boolean completion(DrainEventsReq dto);

    /**
     * 设备类型选择根据备注分类
     *
     * @return
     */
    List<DictItemDevice> getDeviceTypeByRemark(String remark);

    /**
     * 复制新增接口
     *
     * @param id
     * @return
     */
    DrainEventsVo getOneAdd(String id);

    /**
     * 移动端我的工单任务列表
     *
     * @param eventsStatus 1:待办工单 5：催办工单
     * @return 最新一条
     */
    DrainEventsResult queryAppTodoEvents(String eventsStatus);

    /**
     * 编辑工单
     *
     * @param dto
     * @return
     */
    Boolean edit2(DrainEventsBo dto);

    /**
     * 移动端工单详情
     * 后端提供待处理和处理中的状态值的工单
     *
     * @param
     * @return
     */
    PageDataInfo queryAppMoreOrders(DrainEventsReq request);

    /**
     * 工单统计
     *
     * @return
     */
    List<DrainWorkOrderStatisticVo> queryAppWorkOrderStatistics(DrainEventsReq req);

    /**
     * 人工处理工单统计接口
     *
     * @return
     */
    List<DrainWorkOrderHandlingVo> queryAppWorkOrderHandlingStatistics(DrainEventsReq req);

    /**
     * 人工处理工单统计接口
     *
     * @return
     */
    WorkOrderHandlingEChartsVo queryAppWorkOrderHandlingStatisticsForECharts(DrainEventsReq req);
}
